home *** CD-ROM | disk | FTP | other *** search
- /* ARRAYS.C 1.00 DEMONSTRATION OF C LANGUAGE ARRAY DIFFICULTIES
-
- V01 L00 1991-10-29-11:13 develop array case based on problem raised
- by Barry Gombert. How do you put a pointer to an array in
- a struct definition?
-
- */
-
- #include <assert.h>
- #include <stdlib.h>
-
- struct IBlock
-
- {unsigned long (*Band)[];};
-
- struct JBlock
-
- {unsigned long *BandArray;};
-
-
- int main(int argc, char *argv[])
-
- { /* figure out some Band array information */
-
-
- unsigned long Band1[10],
-
- (*BandAid)[10];
-
- struct IBlock Block1;
-
- struct JBlock Block2;
-
- int i;
-
- i = sizeof(Band1)/sizeof(Band1[0]);
- while (i--)
- {Band1[i] = ((unsigned long)(1) << 16) + i; }
-
- Block1.Band = Band1;
- /* The problem. The following line is a *big* clue! */
-
- Block1.Band = (unsigned long (*)[]) Band1;
-
- assert(Block1.Band == Band1);
-
- assert(Block1.Band == (unsigned long (*)[]) Band1);
-
- assert((*Block1.Band)[0] == Band1[0]);
-
- Block2.BandArray = Band1;
-
- assert(Block2.BandArray == Band1);
-
- assert(Block2.BandArray[0] == Band1[0]);
-
- assert(*(Block2.BandArray+0) == Band1[0]);
-
- BandAid = Band1;
-
- BandAid = (unsigned long (*)[]) Band1;
-
- return 0;}
-